# Università degli Studi di Trento
# Facoltà di Scienze MM.FF.NN.
# Corso di Laurea Triennale in Informatica
# A.A. 2010/2011
# Progetto per il corso di Sistemi Operativi 1
# Progetto 4: simulazione di una rotonda
# Autori:
#  Abram Lorenzo - 140368
#  Dal Lago Loris - 139428
#  Florio Alessandro - 140245



# compilatore utilizzato
CC = gcc

# consente di inserire le informazioni di debug e correlati
ALLOW_DEBUG = -O0 -Wall -g

# abilita l'uso dei pthread
ALLOW_PTHREADS = -lpthread

# opzioni per il compilatore presenti ad ogni istruzione del Makefile
# CFLAGS = -c $(ALLOW_DEBUG) $(ALLOW_PTHREADS)
CFLAGS = -c $(ALLOW_PTHREADS)

# l'istruzione per compilare ogni file prende il compilatore e i flags
COMPILE = $(CC) $(CFLAGS)

# l'insieme di file oggetto di tutto il progetto
OBJS = camera.o car.o main.o priorityQueue.o queue.o roundabout.o driver.o

# il file header comune a tutti i file
COMMON_HEADER = common.h




baut : $(OBJS)
#	$(CC) $(ALLOW_PTHREADS) $(ALLOW_DEBUG) $(OBJS) -o baut
	$(CC) $(ALLOW_PTHREADS) $(OBJS) -o baut

camera.o : camera.c camera.h car.h roundabout.h $(COMMON_HEADER)
	   $(COMPILE) camera.c

car.o : car.c car.h $(COMMON_HEADER)
	$(COMPILE) car.c

driver.o : driver.c driver.h car.h roundabout.c $(COMMON_HEADER)
	  $(COMPILE) driver.c

main.o : main.c roundabout.h car.h priorityQueue.h camera.h $(COMMON_HEADER)
	 $(COMPILE) main.c

priorityQueue.o : priorityQueue.c priorityQueue.h car.h $(COMMON_HEADER)
		  $(COMPILE) priorityQueue.c

queue.o : queue.c queue.h car.h $(COMMON_HEADER)
	  $(COMPILE) queue.c

roundabout.o : roundabout.c roundabout.h driver.h queue.h car.h $(COMMON_HEADER)
	       $(COMPILE) roundabout.c



# PHONY indica che 'clean', 'all' e 'remake' sono target che non producono file
.PHONY: clean all remake

# elimina i file oggetto creati nella compilazione, i files temporanei e l'eseguibile './baut'
clean :
	-rm -f *.o *~ baut

all : baut

# consente di effettuare una clean per poi ricostruire da zero l'eseguibile './baut'
remake : clean baut
